#ifndef TYPES_H
#define TYPES_H

#include <iostream>
#include <vector>
#include <map>
#include <string>

#ifndef DEBUG
	#define DEBUG 1
#endif

#define ERROR 1
#define NO_ERROR 0

#define GET_VALUE(type) (((char) (#type[0] + 32)) + (string) &#type[1])
#define GET_VALUE_S(type) (GET_VALUE(type) + "s")

using namespace std;

enum Axis {
	X_AXIS, Y_AXIS, Z_AXIS
};

typedef struct sCoord2 {
	float x, y;
} Coord2;

typedef struct sCoord3 {
	float x, y, z;
} Coord3;

typedef struct sCoord4 {
	float x, y, z, w;
} Coord4;

typedef struct sRgba {
	float r, g, b, a;
} Rgba;

typedef struct sLightComponents {
	Rgba ambient, diffuse, specular;
} LightComponents;

#endif // TYPES